mysql 中 order by in 和order by if 的用法 | 您所在的位置:网站首页 › in order 的用法 › mysql 中 order by in 和order by if 的用法 |
mysql 中 order by in 和order by if 的用法
一、order by in
举例:不知道大家有没有做过SQL zoo的题目,里面有一题就是对这个知识点的考查 题目如下: 可以将表达式主题IN(“化学”,“物理”)用作值-它可以是0或1。 显示1984年获奖者和主题(按主题和获奖者名称排序);但最后列出化学和物理。 其实这个题目已经给提示了,直接运行初始代码可以看到 subject in 符合里面的条件的话是1,否则是0.明白这个原理之后就可以来看看正确答案了 SELECT winner, subject FROM nobel WHERE yr=1984 ORDER BY subject IN (‘Physics’,‘Chemistry’), subject , winner ; 如果subject的值在(‘Chemistry’,‘Physics’)里面,返回1,否则返回0,所以,满足条件的数据,因为返回值是1,进行asc排序的时候,就被放在最后,然后再进行后面的排序 二、order by if直接放图吧,是对题目的第二种解法 If(subject=‘Chemistry’ or subject=‘Physics’,1,0) 中1,0的意思是,对 subject 附加一个隐藏属性,这个属性可以是0或者1;在排序的时候,判断subject是不是等于物理或化学,如果等于,则返回1;否则,返回0。order by 默认是升序,所以值为1的会排在后面。 想要实现排序放在最前面的话只要把“1,0”改成“0,1”即可;也可以在if 后面添加desc来改变放在最前或最后的位置(in 的方法同样适用)。 可以发现,if比较适合对一到两个条件的筛选,多了就会显得冗长繁琐,in 适合对多个条件的筛选,代码简洁。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |